package com.itheima.singleton.review;

/**
 * @program: design
 * @description: 单例模式, 懒汉式
 * @author: zhanghz001
 * @create: 2021-10-19 15:14
 **/
public class SingleModel1 {
    //       不实例化 懒汉模式
    private volatile static SingleModel1 model;
    
    //让构造函数为 private，这样该类就不会被实例化
    private SingleModel1() {
    }
    
    //获取唯一可用的对象
    public static SingleModel1 getInstance() {
        
        //instance为空的时候才创建对象
        if (model == null) {
            //多线程会存在并发创建问题,需要线程隔离
            synchronized (SingleModel1.class) {
                //需要二次判断,不然还是会顺序创建两次的单例
                if (model == null) {
                    model = new SingleModel1();
                }
            }
        }
        return model;
    }
    
}
